// 定义产品接口
interface Product {
  operation(): string; // 产品操作方法
}

// 具体产品类
class ConcreteProductA implements Product {
  operation(): string { // 具体产品操作方法
    return 'Product A';
  }
}

class ConcreteProductB implements Product {
  operation(): string {
    return 'Product B';
  }
}

// 工厂类
class Factory {
  static createProduct(type: string): Product {
    switch (type) {
      case 'A':
        return new ConcreteProductA();
      case 'B':
        return new ConcreteProductB();
      default:
        throw new Error('Unknown product type');
    }
  }
}

// 使用工厂创建对象
const productA = Factory.createProduct('A');
const productB = Factory.createProduct('B');
console.log(productA.operation())
console.log(productA.operation())
console.log(productA.operation())
console.log(productA.operation())
console.log(productB.operation())
